﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using BestDocking.Docking;
using QuanLyKhachHang.Data;

namespace QuanLyKhachHang
{
    public partial class fKhachHang : DockContent
    {
        TTKhachHang Temp = new TTKhachHang();



        string NguoiDungHienTai="";
        public fKhachHang()
        {
            InitializeComponent();
        }
        public fKhachHang(string NguoiDungHienTai)
        {
            InitializeComponent();
            this.NguoiDungHienTai = NguoiDungHienTai;
        }
        void LoadComBo()
        {
            cbNhom.DataSource = Data.NVNhomKhachHang.ChonTatCa();
            cbNhom.DisplayMember = "TenNhomKhachHang";
            cbNhom.ValueMember = "MaNhomKhachHang";
        }
        bool KiemTraThongTinNhap()
        {
            if (string.IsNullOrEmpty(txtMaKhachHang.Text.ToString()) || (string.IsNullOrEmpty(txtTenCongTy.Text.ToString()))|| (string.IsNullOrEmpty(txtLinhVuc.Text.ToString())) || (string.IsNullOrEmpty(txtDiaChi.Text.ToString())) || (cbNhom.SelectedIndex==-1))
            {
                MessageBox.Show("Bạn vui lòng kiểm tra lại thông tin nhập.", "Loi nhap du lieu", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }
            else
            {
                return true;
            }
        }
        void DieuKhien()
        {
            btnSua.Enabled = btnXoa.Enabled = btnXuat.Enabled = (dgvDanhSach.RowCount != 0);
        }
        BindingSource bds = new BindingSource();
        void LoadDuLieu()
        {
            LoadComBo();
            bds.DataSource = Data.NVKhachHang.ChonTatCa();
            dgvDanhSach.DataSource = bds;
            DieuKhien();
        }

        void InputTemp()
        {
            Temp.TenCongTy = txtTenCongTy.Text.Trim();
            Temp.LinhVuc = txtLinhVuc.Text.Trim();
            Temp.DiaChi = txtDiaChi.Text.Trim();
            Temp.DienThoai = txtDienThoai.Text.Trim();
            Temp.NgayLienHe = DateTime.Parse(cbNgayLienHe.Value.ToShortDateString());
            Temp.DanhGia = cbDanhGia.Text.Trim();
            Temp.GhiChu = txtGhiChu.Text.Trim();
            Temp.MaNhomKhachHang = cbNhom.SelectedValue.ToString(); 
        }
        void OutputTemp()
        {
            Temp.TenCongTy = txtTenCongTy.Text.Trim();
            txtLinhVuc.Text = Temp.LinhVuc;
            txtDiaChi.Text = Temp.DiaChi;
            txtDienThoai.Text = Temp.DienThoai;
            cbNgayLienHe.Value = Temp.NgayLienHe;
            Temp.DanhGia = cbDanhGia.Text.Trim();
            txtGhiChu.Text = Temp.GhiChu;
            cbNhom.SelectedValue = Temp.MaNhomKhachHang;
        }

        // true : Thực hiện thao tác | false : Kiểm tra lại
        bool CheckValidate()
        {
            InputTemp();
            // true : tiếp tục | fale: bỏ qua
            bool error = false;
            DialogResult  dl;

            if ((LoiCongTy() == false) || (LoiDiaChi() == false) || (LoiDienThoai() == false))
            {
                if (!LoiCongTy())
                {
                    dl = MessageBox.Show("Chuẩn đoán lỗi của chương trình không chính xác ! \n - Yes : Tiếp tục thực hiện thao tác \n - No : Liệt kê chuẩn đoán và lấy lại thông tin để so sánh", "Canh bao", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                    if (dl == DialogResult.Yes)
                    {
                        error = true;
                    }
                    else
                    {
                        OutputTemp();
                        dgvDanhSach.DataSource = Connect.cnSQL.ExecQuery("Select KhachHang.*, NhomKhachHang.TenNhomKhachHang FROM  KhachHang LEFT OUTER JOIN  NhomKhachHang ON KhachHang.MaNhomKhachHang = NhomKhachHang.MaNhomKhachHang " + Connect.ScriptSQL.LikeSearch(txtTenCongTy.Text.Trim(), "TenCongTy"));
                        error = false;
                        
                    }
                }

                if ((!LoiDiaChi())&&(error==true))
                {
                    dl = MessageBox.Show("Chuẩn đoán lỗi của chương trình không chính xác ! \n - Yes : Tiếp tục thực hiện thao tác \n - No : Liệt kê chuẩn đoán và lấy lại thông tin để so sánh", "Canh bao", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                    if (dl == DialogResult.Yes)
                    {
                        error = true;
                    }
                    else
                    {
                        OutputTemp();
                        dgvDanhSach.DataSource = Connect.cnSQL.ExecQuery("Select KhachHang.*, NhomKhachHang.TenNhomKhachHang FROM  KhachHang LEFT OUTER JOIN  NhomKhachHang ON KhachHang.MaNhomKhachHang = NhomKhachHang.MaNhomKhachHang " + Connect.ScriptSQL.LikeSearch(txtDiaChi.Text.Trim(), "DiaChi"));
                        error = false;
                    }
                }

                if ((!LoiDienThoai())&&(error==true))
                {
                    dl = MessageBox.Show("Chuẩn đoán lỗi của chương trình không chính xác ! \n - Yes : Tiếp tục thực hiện thao tác \n - No : Liệt kê chuẩn đoán và lấy lại thông tin để so sánh", "Canh bao", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                    if (dl == DialogResult.Yes)
                    {
                        error = true;
                    }
                    else
                    {
                        OutputTemp();
                        dgvDanhSach.DataSource = Connect.cnSQL.ExecQuery("Select KhachHang.*, NhomKhachHang.TenNhomKhachHang FROM  KhachHang LEFT OUTER JOIN  NhomKhachHang ON KhachHang.MaNhomKhachHang = NhomKhachHang.MaNhomKhachHang " + Connect.ScriptSQL.LikeSearch(txtDienThoai.Text.Trim().Replace(",", "").Replace(".", "").Replace("#", ""), "DienThoai"));
                        error = false;
                    }
                }
            }
            else
            {
                return true;
            }

            

            if (error == true)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        private void fKhachHang_Load(object sender, EventArgs e)
        {
            LoadDuLieu();
            txtMaKhachHang.DataBindings.Clear();
            txtMaKhachHang.DataBindings.Add("Text", bds, "MaKhachHang", true, DataSourceUpdateMode.Never);
            txtTenCongTy.DataBindings.Clear();
            txtTenCongTy.DataBindings.Add("Text", bds, "TenCongTy", true, DataSourceUpdateMode.Never);
            txtLinhVuc.DataBindings.Clear();
            txtLinhVuc.DataBindings.Add("Text", bds, "LinhVuc", true, DataSourceUpdateMode.Never);
            txtDiaChi.DataBindings.Clear();
            txtDiaChi.DataBindings.Add("Text", bds, "DiaChi", true, DataSourceUpdateMode.Never);
            txtDienThoai.DataBindings.Clear();
            txtDienThoai.DataBindings.Add("Text", bds, "DienThoai", true, DataSourceUpdateMode.Never);
            try
            {
                cbNgayLienHe.DataBindings.Clear();
                cbNgayLienHe.DataBindings.Add("Value", bds, "NgayLienHe", true, DataSourceUpdateMode.Never);
            }
            catch (Exception)
            {


            }
            finally
            { 
             cbDanhGia.DataBindings.Clear();
            cbDanhGia.DataBindings.Add("SelectedItem", bds, "DanhGia", true, DataSourceUpdateMode.Never);
            txtGhiChu.DataBindings.Clear();
            txtGhiChu.DataBindings.Add("Text", bds, "GhiChu", true, DataSourceUpdateMode.Never);
            cbNhom.DataBindings.Clear();
            cbNhom.DataBindings.Add("SelectedValue", bds, "MaNhomKhachHang", true, DataSourceUpdateMode.Never);
            if (cbNhom.SelectedIndex==-1)
            {
                cbNhom.SelectedIndex = 0;
            }
            }
          
        }

        private void cbNhom_MouseHover(object sender, EventArgs e)
        {
            if (Data.NVNhomKhachHang.ChonTatCa().Rows.Count!=cbNhom.Items.Count)
            {
                LoadComBo();
            }
            
        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            if (KiemTraThongTinNhap() == false)
                {
                    return;
                }
            if (cbNhom.SelectedIndex == -1)
            {
                cbNhom.SelectedIndex = 0;
            }
           if (!CheckValidate())
	            {
                    return;
	            } 
     
            try
            {
                
                Data.TTKhachHang KhachHang = new Data.TTKhachHang();
                KhachHang.MaKhachHang = SinhMa.Sinh("KH",Data.NVKhachHang.ChonTatCa(), "00000000");
                KhachHang.TenCongTy = txtTenCongTy.Text.Trim();
                KhachHang.LinhVuc = txtLinhVuc.Text.Trim();
                KhachHang.DiaChi = txtDiaChi.Text.Trim();
                KhachHang.DienThoai = txtDienThoai.Text.Trim();
                KhachHang.NgayLienHe = DateTime.Parse(cbNgayLienHe.Value.ToShortDateString());
                KhachHang.DanhGia = cbDanhGia.Text.Trim();
                KhachHang.GhiChu = txtGhiChu.Text.Trim();
                KhachHang.MaNhomKhachHang = cbNhom.SelectedValue.ToString(); 
                Data.NVKhachHang.Them(KhachHang);
                lbstatus.Text = "Bạn đã thêm thành công khách hàng " + KhachHang.TenCongTy;
                LoadDuLieu();
            }
            catch (Exception)
            {
                    lbstatus.Text = "Quá trình thêm công ty không thành công";            
             
            }
        }

        private void btnSua_Click(object sender, EventArgs e)
        {
            if (KiemTraThongTinNhap() == false)
            {
                return;
            }
            if (cbNhom.SelectedIndex == -1)
            {
                cbNhom.SelectedIndex = 0;
            }
            Data.TTKhachHang KhachHang = new Data.TTKhachHang();
            KhachHang.MaKhachHang = txtMaKhachHang.Text.Trim();
            KhachHang.TenCongTy = txtTenCongTy.Text.Trim();
            KhachHang.LinhVuc = txtLinhVuc.Text.Trim();
            KhachHang.DiaChi = txtDiaChi.Text.Trim();
            KhachHang.DienThoai = txtDienThoai.Text.Trim();
            KhachHang.NgayLienHe = cbNgayLienHe.Value;
            KhachHang.DanhGia = cbDanhGia.Text.Trim();
            KhachHang.GhiChu = txtGhiChu.Text.Trim();
            KhachHang.MaNhomKhachHang = cbNhom.SelectedValue.ToString();            
            try
            {
                Data.NVKhachHang.Sua(KhachHang);
                lbstatus.Text = "Bạn đã sửa thành công thông tin khách hàng " + KhachHang.TenCongTy ;
            }
            catch (Exception)
            {
                MessageBox.Show("Mã khách hàng vừa nhập vào không có.", "Loi du lieu", MessageBoxButtons.OK, MessageBoxIcon.Error);

            }
            LoadDuLieu();
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(txtMaKhachHang.Text.Trim())!= false)
            {
                return;
            }
            try
            {
                Data.NVKhachHang.Xoa(txtMaKhachHang.Text.Trim());
                lbstatus.Text = "Bạn đã xóa thành công khách hàng";
            }
            catch (Exception)
            {
                MessageBox.Show("Mã khách hàng vừa nhập vào không có.", "Loi du lieu", MessageBoxButtons.OK, MessageBoxIcon.Error);

            }
            LoadDuLieu();
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void dgvDanhSach_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                if (string.IsNullOrEmpty(dgvDanhSach["dgvMaKhachHang", e.RowIndex].Value.ToString()) == false) 
                {
                    fThongTin f = new fThongTin(dgvDanhSach["dgvMaKhachHang", e.RowIndex].Value.ToString(), NguoiDungHienTai);
                    f.ShowDialog();
                    LoadDuLieu();
                    return;
                }
                return;
            }
            catch (Exception)
            {
                return;
            }
          
        }






        private void btnNhap_Click(object sender, EventArgs e)
        {
            Connect.Connection con = new Connect.Connection();
            Connect.Import f = new Connect.Import();
            f.ShowDialog();
            LoadDuLieu();
        }


        private void btnXuat_Click(object sender, EventArgs e)
        {
           
        }

        private void btnHienHet_Click(object sender, EventArgs e)
        {
            LoadDuLieu();
        }


        #region Lỗi Nhập chùng tên công ty
        private bool LoiCongTy()
        {
            try
            {
                if (Data.NVKhachHang.LoiCongTy(txtTenCongTy.Text.Trim()) == true)
                        {
                            LoiCT.Clear();
                            LoiCT.SetError(txtTenCongTy, "");   
                                return true;
                        }
                        else
                        {  
              
                            LoiCT.Clear();
                            LoiCT.SetError(txtTenCongTy, "Tên công ty này có thể đã tồn tại bạn hãy kiểm tra lại");

                            return false;
                        }
            }
            catch (Exception)
            {
                return false;
            }
        
           
        }

        private void txtTenCongTy_Validated(object sender, EventArgs e)
        {
            LoiCongTy();
        }        
        #endregion

        #region Lỗi Nhập địa chỉ công ty

        private void txtDiaChi_Validated(object sender, EventArgs e)
        {
            LoiDiaChi();
        }
        private bool LoiDiaChi()
        {
            try
            {
                if (Data.NVKhachHang.LoiDiaChi(txtDiaChi.Text.Trim().Replace("-"," ").Replace("."," ").Replace(",","")) == true)
                    {
                        LoiDC.Clear();
                        LoiDC.SetError(txtDiaChi, "");
                        return true;
                    }
                    else
                    {
                        LoiDC.Clear();
                        LoiDC.SetError(txtDiaChi, "Địa chỉ này có thể đã tồn tại, bạn hãy kiểm tra lại");
           
                        return false;
                    }
            }
            catch (Exception)
            {
                return false;
            }
         
            
        }        
        #endregion

        #region Lỗi Nhập điện thoại công ty
        private bool LoiDienThoai()
        {
            try
            {
                        if (Data.NVKhachHang.LoiDienThoai(txtDienThoai.Text.Trim().Replace(",", "").Replace(".", "").Replace("#", "")) == true)
                        {
                            LoiDT.Clear();
                            LoiDT.SetError(txtDienThoai, "");
                            return true;
                        }
                        else
                        {
                            LoiDT.Clear();
                            LoiDT.SetError(txtDienThoai, "Điện thoại này có thể đã tồn tại, bạn hãy kiểm tra lại");
                            return false;
                        }
            }
            catch (Exception)
            {
                return false;
            }
          
        }
        private void txtDienThoai_Validated(object sender, EventArgs e)
        {
            txtDienThoai.Text = txtDienThoai.Text.Replace(",", "").Replace(".", "").Replace("#","");
            LoiDienThoai();
        }        
        #endregion



        #region Chuột phải
        
        #endregion
        private void xóaKháchHàngNàyToolStripMenuItem_Click(object sender, EventArgs e)
        {
            fKhachHang_Load(sender, e);
        }


    }
}
